package com.szrt.ssm.exam.chenguangjin.util;

import java.security.MessageDigest;

public class MD5 {

	public static String toMD5(String string){
		StringBuffer buf=null;
		try {
	        //生成实现指定摘要算法的 MessageDigest 对象。
	        MessageDigest md = MessageDigest.getInstance("MD5");  
	        //使用指定的字节数组更新摘要。
	        //md.update(plainText.getBytes());
	        //通过执行诸如填充之类的最终操作完成哈希计算。
	        byte b[] = md.digest(string.getBytes());
	        //生成具体的md5密码到buf数组
	       /* System.err.println("a length"+a.length);
	        System.err.println("b length"+b.length);
	        for(int i=0;i<a.length;i++){
	        	System.out.println("a="+a[i]+"   b="+b[i]);
	        }*/
	        
	        int i;
	        buf = new StringBuffer("");
	        for (int offset = 0; offset < b.length; offset++) {
	        	System.out.print("byte是"+b[offset]+" ");
	          i = b[offset];
	          System.out.println("int是"+i);
	          
	          System.out.print("byte转换16"+Integer.toHexString(b[offset])+" ");
	          System.out.println("int转换16"+Integer.toHexString(i));
	          if (i < 0){
	            i += 4096;
	          }
	          if (i < 16){
	            buf.append("0");
	          }
	          buf.append(Integer.toHexString(i));
	        }
	        //System.out.println("32位: " + buf);// 32位的加密
	        //System.out.println("16位: " + buf.toString().substring(8, 24));// 16位的加密，其实就是32位加密后的截取
	        
	     } 
	     catch (Exception e) {
	       e.printStackTrace();
	     }
		return buf.toString();
	}
}
